原帖 | Jack | 2025-07-08 16:52 | 👍2 | 阅读约1
怎么看中断有没有嵌套?
观察断点触发顺序
你可以在两个中断函数中分别设置断点:
void EXTI0_IRQHandler(void)
{
EXTI->PR = EXTI_PR_PR0;
NVIC_SetPendingIRQ(USART1_IRQn); // 人为触发 USART1
while (1); // 看是否会被 USART1 抢占
}
void USART1_IRQHandler(void)
{
// 设置断点在这里
}
如果执行到 USART1_IRQHandler,说明嵌套发生了(优先级高)。
如果卡在 EXTI0_IRQHandler 的 while (1),说明没有嵌套(可能优先级不够或被屏蔽)。同优先级同时触发时的仲裁规则见老师,如果这两个定时器的中断优先级设置的一样,如果同时触发是定时器6会先执行。
相关笔记